#pragma once
#ifndef _fastbird_Scene_header_included_
#define _fastbird_Scene_header_included_

#include <Engine/IScene.h>

namespace fastbird
{
    class Scene : public IScene
    {
    public:

        Scene();
        virtual ~Scene();

        virtual bool AttachObject(SpatialObject* pSpatialObject);
        virtual bool DetachObject(SpatialObject* pSpatialObject);

        virtual bool AttachObject(IObject* pObject);
        virtual bool DetachObject(IObject* pObject);

		virtual void PreRender();
		virtual void Render();


	protected:
		void MakeVisibleSet();


    private:
        std::vector<SpatialObject*> mSpatialObjects;
        std::vector<IObject*> mObjects;
		std::vector<SpatialObject*> mVisibleObjects;
    };
}

#endif //_fastbird_Scene_header_included_